/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import beans.B_Pregunta;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import beans.B_PreguntaTipoEvaluacion;
import beans.B_TipoEvaluacion;
import db.DB_PreguntaTipoEvaluacion;

/**
 *
 * @author JoseHernan
 */
public class C_PreguntaTipoEvaluacion extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        //Preguntamos si estamos logueados
        if (session.getAttribute("userName") != null) {
            String action = request.getParameter("action");
            String userName = session.getAttribute("userName").toString();
            String mensaje = "";
            int flagAccion = 0;
            String id = request.getParameter("id");
            //Parameters

            String requerimiento = request.getParameter("requerimiento");
            String idPregunta = request.getParameter("idPregunta");
            String idTipoEvaluacion = request.getParameter("idTipoEvaluacion");

            B_PreguntaTipoEvaluacion obj;
            B_TipoEvaluacion objTipoEvaluacion;
            B_Pregunta objPregunta;
            //New
            if (action.equals("n")) {
                //Set Parameters
                obj = new B_PreguntaTipoEvaluacion();
                obj.setRequerimiento(requerimiento);
                objTipoEvaluacion = new B_TipoEvaluacion();
                objTipoEvaluacion.setId(Integer.parseInt(idTipoEvaluacion));
                obj.setObjTipoEvaluacion(objTipoEvaluacion);
                objPregunta = new B_Pregunta();
                objPregunta.setId(Integer.parseInt(idPregunta));
                obj.setObjPregunta(objPregunta);
                obj.setUser(userName);
                mensaje = DB_PreguntaTipoEvaluacion.crud(obj, action);
                flagAccion = 1;
            } //Update
            else if (action.equals("u")) {
                obj = new B_PreguntaTipoEvaluacion();
                obj.setId(Integer.parseInt(id));
                obj.setRequerimiento(requerimiento);
                objTipoEvaluacion = new B_TipoEvaluacion();
                objTipoEvaluacion.setId(Integer.parseInt(idTipoEvaluacion));
                obj.setObjTipoEvaluacion(objTipoEvaluacion);
                objPregunta = new B_Pregunta();
                objPregunta.setId(Integer.parseInt(idPregunta));
                obj.setObjPregunta(objPregunta);
                obj.setUser(userName);
                mensaje = DB_PreguntaTipoEvaluacion.crud(obj, action);
                flagAccion = 1;
            } //Delete
            else if (action.equals("d")) {
                obj = new B_PreguntaTipoEvaluacion();
                obj.setId(Integer.parseInt(id));
                mensaje = DB_PreguntaTipoEvaluacion.crud(obj, action);
                flagAccion = 1;
            } else if (action.equals("ds")) {
                String[] itemsDelete = id.split(",");
                //Verificamos que tenga mas de 1 item
                if (itemsDelete.length > 0) {
                    for (int i = 0; i < itemsDelete.length; i++) {
                        obj = new B_PreguntaTipoEvaluacion();
                        obj.setId(Integer.parseInt(itemsDelete[i]));
                        mensaje += DB_PreguntaTipoEvaluacion.crud(obj, "d");
                        if ((i + 1) < itemsDelete.length) {
                            mensaje += "***";
                        }
                    }
                }
                flagAccion = 1;
            } else if (action.equals("get_tipos_evaluacion")) {
                mensaje = getObjHtml(Integer.parseInt(idPregunta));
                flagAccion = 1;
            }
            if (flagAccion == 0) {
                mensaje = "La página solicitada no existe.";
                response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=home.jsp");
            } else {
//                if (mensaje.equals("OK")) {
//                    mensaje += getObjHtml(Integer.parseInt(idControlAuditoria), Boolean.parseBoolean(isPreguntaCumplimiento));
//                }
                out.write(mensaje);
            }
        } else {
            //WITHOUT SESSION
            String mensaje = "Su sesion a expirado, ingrese nuevamente.";
            response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=index.jsp");
        }
    }

    public String getObjHtml(int idPregunta) {
        StringBuilder html = new StringBuilder();
        ArrayList<B_PreguntaTipoEvaluacion> listPreguntaTipoEvaluacion = DB_PreguntaTipoEvaluacion.getListByIdPregunta(idPregunta);
        html.append("<tr id='id_pregunta_tipo_eva_").append(idPregunta).append("'>");
        html.append("<td colspan='8'>");
        html.append("<a class=\"btn blue\" style=\"margin-bottom: 5px;\" onclick=\"changeDataModalCustom2('View/PreguntaTipoEvaluacion/V_PreguntaTipoEvaluacion_Update.jsp?action=n&idPregunta=").append(idPregunta).append("', '40%');\">Asociar Tipo Evaluación</a></h3>");
        if (listPreguntaTipoEvaluacion.isEmpty()) {
            html.append("<div class=\"Metronic-alerts alert alert-danger fade in\">No se encontraron Tipos de evaluacion relacionados.</div>");
        } else {
            html.append("<table class=\"table table-condensed table-hover table-bordered\">");
            html.append("<thead>");
            html.append("<tr>");
            html.append("<th>Nº</th>");
            html.append("<th>Tipo Evaluación</th>");
            html.append("<th>Requerimiento</th>");
            html.append("<th colspan=\"2\">Acciones</th>");
            html.append("</tr>");
            html.append("</thead>");
            html.append("<tbody>");

            B_PreguntaTipoEvaluacion objPreguntaTipoEvaluacion;
            for (int i = 0; i < listPreguntaTipoEvaluacion.size(); i++) {
                objPreguntaTipoEvaluacion = listPreguntaTipoEvaluacion.get(i);
                html.append("<tr>");
                html.append("<td>");
                html.append(i + 1);
                html.append("</td>");
                html.append("<td>");
                html.append(objPreguntaTipoEvaluacion.getObjTipoEvaluacion().getNombre());
                html.append("</td>");
                html.append("<td>");
                html.append(objPreguntaTipoEvaluacion.getRequerimiento());
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a class=\"tooltips\" data-original-title=\"Editar\" href=\"#basic\" data-toggle=\"modal\" onclick=\"changeDataModalCustom2('View/PreguntaTipoEvaluacion/V_PreguntaTipoEvaluacion_Update.jsp?action=u&id=").append(objPreguntaTipoEvaluacion.getId()).append("&idPregunta=").append(idPregunta).append("', '40%');\"><i class=\"fa fa-pencil-square\"></i></a>");
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a href=\"#basic\" data-toggle=\"modal\" onClick=\"deletePreguntaTipoEvaluacion(").append(objPreguntaTipoEvaluacion.getId()).append(",").append(idPregunta).append(");\"><i class=\"fa fa-trash-o\"></i></a>");
                html.append("</td>");
                html.append("</tr>");
            }
            html.append("</tbody>");
            html.append("</table>");
        }
        html.append("</td>");
        html.append("</tr>");
        return html.toString();
    }

}
